package com.miniapp.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;

/**
 * 基础文件表
 *
 * <p>存储文件的核心元数据，包括存储路径、类型、大小等信息
 * <p>新增isTemporary字段标记是否为临时文件
 *
 * @author yourName
 * @date 2025-09-06
 */
@Data
@TableName("t_base_file")
public class BaseFile {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 文件在存储服务中的唯一标识（如MinIO的objectKey）
     */
    @TableField("file_key")
    private String fileKey;

    /**
     * 文件访问URL
     */
    @TableField("file_url")
    private String fileUrl;

    /**
     * 原始文件名
     */
    @TableField("file_name")
    private String fileName;

    /**
     * 存储文件名
     */
    @TableField("storage_file_name")
    private String storageFileName;

    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    private Long fileSize;

    /**
     * 文件类型（Content-Type）
     */
    @TableField("file_type")
    private String fileType;

    /**
     * 是否为临时文件（0-否，1-是）
     */
    @TableField("is_temporary")
    private Integer isTemporary;

    /**
     * 临时文件过期时间（仅临时文件有效）
     */
    @TableField("expire_time")
    private LocalDateTime expireTime;

    /**
     * 上传人ID
     */
    @TableField("uploader_id")
    private Long uploaderId;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 是否删除（0-未删除，1-已删除）
     */
    @TableField("is_deleted")
    private Integer isDeleted;
}
